In conventional additive manufacturing, also known as 3D printing, material is deposited a layer at a time using a material deposition tool or print head that selectively deposits material as it moves across a processor-controlled two-dimensional path, referred to as a slice. The processor is typically programmed to move the tool or head in a raster (back and forth) grid path, and commands the tool to deposit material when the tool or head is positioned at designated locations along the raster path. The process repeats, layer upon layer until the additive manufactured part is complete.
In a typical case, the part to be manufactured will be represented with a 3D model consisting of operations (for example union, difference, and intersection) combining primitive shapes into a solid geometry. Slices of these types of 3D models result in collections of relatively simple shapes on a plane. For example, a hollow globe might be designed as comprising layers of concentric circles whose radii gradually increase from the south pole to the equator and then gradually decrease from the equator to the north pole. A solid sphere would be manufactured in a similar fashion, except that the interiors of the concentric circles would be filled with material. In typical applications the number of primitive shapes in the 3D model and the 2D slices are fairly limited, perhaps less than 10,000 primitives even for a complicated part. Creating an additive manufactured part for these kinds of parts is straightforward and requires modest computational resources.
While parts manufactured from simple shapes are sometimes adequate, there are applications when more sophisticated material properties are needed to achieve a part that is stronger, lighter, or exhibits anisotropic properties that differ from its counterpart made from primitive shapes. In such instances, it may be desirable to define the part as a lattice comprising a plurality of intersecting struts. By way of illustration, FIG. 1 shows how a cube might be defined as a lattice of intersecting struts.
As FIG. 1 shows, in the general case, the struts are not necessarily disposed in common planes, as one might construct a log cabin. Rather the longitudinal vector directions of the struts can be quite different from one another. By way of example, illustrated at 12, the cube 10 is defined as a random tetrahedral structure. In contrast, the cube illustrated at 14 is defined as a periodic octet truss structure. In every case, each given slice is defined to place material at the precise locations needed to additively build up the plurality of struts. The slice pattern can become quite complex, resembling a plurality of oddly shaped spots or cross-sectional regions distributed across the slice, as shown in FIG. 2.
To compute where to place the cross-sectional regions for each consecutive slice plane, the conventionally programmed processor attempts to convert the computer aided design (CAD) description of the lattice (e.g., cubes 12 and 14 in FIG. 1) into a manifold stereolithographic (STL) description of the part surface. Often this will be done by constrained Delaunay triangulation. The conventional process is highly inefficient because the typical lattice structure can consist of thousands or even millions of individual strut members, often represented as prisms or cylinders. These must be merged into a manifold surface.
For very large slender member structures this process of generating the manifold STL can be exceedingly computationally expensive. The process will either take an enormous amount of time to compute; or worse, the process will fail when the processor runs out of memory. Running out of memory is not unlikely because the memory requirements geometrically explode as the number of lattice struts increases.
Aside from being computationally inefficient, the STL triangulation technique has the additional disadvantage of losing precision. This is because triangulated representations of cylindrical members inherently lose some precision, as the smooth surface of the cylinder must be replaced by a faceted description. If an application requires high fidelity to the original cylindrical struts, the stereolithographic (STL) description requires a large number of triangles per strut. This tends to increase the amount of memory required to create the STL description and inflate the size of the final STL file.